package com.it.lambda;

import com.it.arrays.Student;

import java.util.Arrays;
import java.util.Comparator;
import java.util.function.IntToDoubleFunction;

public class Lambda2 {
    public static void main(String[] args) {
        // 目标：使用Lambda简化函数式接口
        double[] prices = {99.8, 128, 100};

//        Arrays.setAll(prices, new IntToDoubleFunction() {
//            @Override
//            public double applyAsDouble(int value) {
//                // value = 0 1 2
//                return prices[value] * 0.8;
//            }
//        });

//        Arrays.setAll(prices, (int value) -> {
//            return prices[value] * 0.8;
//        });

//        1.参数类型可以省略不写
//        Arrays.setAll(prices, (value) -> {
//            return prices[value] * 0.8;
//        });

//        2.如果只有一个参数，参数类型可以省略，同时()也可以省略
//        Arrays.setAll(prices, value -> {
//            return prices[value] * 0.8;
//        });

//        3.如果Lambda表达式中的方法代码只有一行代码，可以省略大括号不写，同时要省略分号！此时，如果这行代码是return语句，也必须去掉return不写
        Arrays.setAll(prices, value -> prices[value] * 0.8);

        System.out.println(Arrays.toString(prices));
        System.out.println("---------------------------------------");

        Student[] students = new Student[4];
        students[0] = new Student("至尊宝", 169.1, 26);
        students[1] = new Student("蜘蛛精", 159.2, 23);
        students[2] = new Student("紫霞仙子", 160.8, 25);
        students[3] = new Student("八戒", 167.5, 27);

//        Arrays.sort(students, new Comparator<Student>() {
//            @Override
//            public int compare(Student o1, Student o2) {
//                return Double.compare(o1.getHeight(), o2.getHeight()); //升序
//            }
//        });

//        Arrays.sort(students, (Student o1, Student o2) -> {
//            return Double.compare(o1.getHeight(), o2.getHeight()); //升序
//
//        });

//        Arrays.sort(students, (o1, o2) -> {
//            return Double.compare(o1.getHeight(), o2.getHeight()); //升序
//
//        });

        Arrays.sort(students, (o1, o2) -> Double.compare(o1.getHeight(), o2.getHeight()));

        System.out.println(Arrays.toString(students));
    }
}
